#include <iostream>
#include <cstdlib>
using namespace std;

void inserir(int v[], int &n, int e){
	if (40 == n){
		cout << "ERRO: Lista cheia.";
	}else{
		v[n] = e;
		n++;
	}
}

void percorrer(int v[], int n){
	for (int i = 0; i < n; i++)
		cout <<  v[i] << " ";
}

bool troca (int v[], int a, int b){
     int aux;
     aux = v[a];
     v[a] = v[b];
     v[b] = aux;
     return true;
}

int ordenaInsercao(int v[], int n){
	int i, j, p = 3;
	for (j = 1; j < n; j++){
                p = p+2;
		for (i=j; i > 0 && v[i-1]> v[i]; i--){
                         troca(v,i,(i-1));
                         p = p+6;
		}
	}
        return p;
}

// Prog. Principal
int main(){
	int v[40], tam, i, temp;
        tam = 0;
	for (i = 0; i < 15; i++){
		cout << "Digite um numero: ";
		cin >> temp;
		inserir(v, tam, temp);
	}
	cout << "\n\n Imprimindo antes de ordenar: ";
	percorrer(v,tam);
	temp = ordenaInsercao(v,tam);
	cout << "\n\n Imprimindo depois de ordenar: ";
	percorrer(v,tam);
        cout << "\n\n Precisei de " << temp << " passos para ordenar.";
	cout << "\n\n.";
	system("pause");
	return 0;
}
